package com.itheima.dao;

import com.itheima.pojo.Order;
import com.itheima.pojo.OrderSetmeal;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface OrderDao {
    //通过条件查询预约信息
    List<Order> findByCondition(Order order);

    //新增预约
    void add(Order order);

    //根据预约ID查询预约相关信息（体检人姓名、预约日期、套餐名称、预约类型）
    Map findById4Detail(Integer id);

    //今日预约数
    Integer findOrderCountByDate(String today);

    //本月预约数
    Integer findOrderCountAfterDate(String thisWeekMonday);

    //今日到诊数
    Integer findVisitsCountByDate(String today);

    //本周到诊数
    Integer findVisitsCountAfterDate(String thisWeekMonday);

    //热门套餐（取前4）
    List<Map> findHotSetmeal();

    //预约列表分页查询
    List<Order> findListByCondition(Map<String, Object> map);

    //预约列表编辑数据回显
    Order findByOrderId(int id);

    //预约修改
    void edit(Order order);

    //更改预约状态
    void changeStatus(Order order);

    //删除预约信息
    void delete(int id);

    //删除预约关联关系
    void deleteAdress(int id);

    //查询订单和对应的套餐信息
    Map<String, Object> findOrderAndSetmeal(OrderSetmeal orderSetmeal);

    //建立订单和地址的关联关系
    void setOrderAndAddress(@Param("orderId") Integer orderId, @Param("addressId") Integer id);
    //查询指定日期
    List<String> findDate(@Param("startTime")String startTime ,@Param("endTime")String endTime);
    // <!--根据指定日期查询每日的预约数-->
    List<Integer> findOrderByDate(@Param("startTime")String startTime,@Param("endTime")String endTime);
    //<!--根据指定日期查询每日的到诊数-->
    List<Integer> findVisitByDate(@Param("startTime")String startTime,@Param("endTime")String endTime);

    //获取健康干预order setmeal数据
    List<Order> findOrderAndSetmealAll();

    List<Order> findOrderAndSetmealByTime(@Param("start") Date start, @Param("end") Date end, @Param("str") String str);
    //查询指定日期
    List<String> findDate1();
    // <!--根据指定日期查询每日的预约数-->
    List<Integer> findOrderByDate1();
    //<!--根据指定日期查询每日的到诊数-->
    List<Integer> findVisitByDate1();

    Order findOrderById(Integer orderId);
}
